
/**
 * 封装微信Promise解决微信异步函数回调地狱
 */
const wxPromisify = (fn) => {
  return (obj = {}) => {//设置对象的默认值
    return new Promise((resolve, reject) => {
      //Promise就是回调替换管理器，他负责把原来异步函数中的异步操作，替换成成功和失败的回调(古老的方式的回调)
      //并且把这个回调放入Promise对象中，最后返回的是一个异步操作的Promise对象，他拥有了这些异步操作的回调，
      //自身的.then属性来依次调用回调（当前也有可能不是按参数顺序），然后再把替换过的对象重新给这个函数塞进去（封装的思想）
      //然后我们就成功管理起了这些回调，方便了调用
      obj.success = function (res) {
        resolve(res)
      }
      obj.fail = function (res) {
        reject(res)
      }
      fn(obj)//执行函数参数为传入函数的参数
    })
  }
}
const request = wxPromisify(wx.request)
const setStorage = wxPromisify(wx.setStorage)
const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

const requestJsonData = (url, data,keyname) => {
  return request({
    url,
    data
  }).then(res => {
    setStorage({
      key: keyname,
      data: res.data.HeWeather6
    })
    return new Promise((resolve, reject) => {
      resolve(res.data.HeWeather6)
    })
  })
}



module.exports = {
  formatTime,
  wxPromisify,
  requestJsonData
}
